package com.example.java.utils;

import java.util.Random;
import java.util.random.RandomGenerator;

// Random 随机数生成器示例
// 此类的实例用于生成伪随机数流；其周期仅为2^48
public class RandomMain {
    public static void main(String[] args) {
        // Random 随机数生成器
        Random random = new Random();

        // 从该随机数生成器的序列中返回下一个伪随机、均匀分布的int值。
        int randomNumber = random.nextInt();
        System.out.println("Random number: " + randomNumber);
        int nextInt = random.nextInt(10);// 返回[0, 10)范围内的随机数
        System.out.println("Next random number: " + nextInt);




        // RandomGenerator 接口旨在为生成随机或（更典型地）伪随机数（或布尔值）序列的对象提供一个通用协议。推荐直接使用 RandomGenerator 而不是 Random。
        // RandomGenerator https://java.cunzaima.cn/jdk21/doc-zh/api/java.base/java/util/random/RandomGenerator.html
        RandomGenerator randomGenerator = RandomGenerator.getDefault();
        int randomNumber1 = randomGenerator.nextInt();
        System.out.println("RandomGenerator Random number: " + randomNumber1);

        int nextInt1 = randomGenerator.nextInt(10);
        System.out.println("RandomGenerator Next random number: " + nextInt1);




        // 返回一个将方法调用委托给RandomGenerator参数的Random实例
        Random random1 = Random.from(randomGenerator);
        int randomNumber2 = random1.nextInt();
        System.out.println("Random number: " + randomNumber2);

        int nextInt2 = random1.nextInt(10);
        System.out.println("Next random number: " + nextInt2);
    }
}

// 关于 Random 随机数生成器相关的使用参考官方文档 https://java.cunzaima.cn/jdk21/doc-zh/api/java.base/java/util/Random.html